package controller;

import dao.MinistraJpaController;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import dao.exceptions.NonexistentEntityException;
import model.Ministra;
import pagecontroller.JsfUtil;

/**
 *
 * @author Edilson Fernandes da Costa
 * @version 1.0
 */
public class MinistraController {

    public MinistraController() {
        if (JsfUtil.getObjectFromSession("MinistraJpaController") == null) {
            jpaController = new MinistraJpaController();
        } else {
            jpaController = (MinistraJpaController) JsfUtil.getObjectFromSession("MinistraJpaController");
        }
    }
    private Ministra ministra = null;
    private Ministra ministraAux = null;
    private MinistraJpaController jpaController = null;
    private List<Ministra> ministras = null;


   public void persiste() {
        if (ministra.getId() == null) {
            create();
        } else {
            update();
        }
    }

    public String update() {
        try {
            jpaController.edit(this.ministra);
            ministraAux = ministra;
            this.ministra = null;
            JsfUtil.addSuccessMessage("Ministra Atualizado com Sucesso");
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(MinistraController.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception ex) {
            Logger.getLogger(MinistraController.class.getName()).log(Level.SEVERE, null, ex);
        }
        return "refreshPage";
    }

    public String create() {
        try {
            jpaController.create(ministra);
            ministraAux = ministra;
            ministra = null;
            JsfUtil.addSuccessMessage("Ministra cadastrado com sucesso.");
        } catch (Exception e) {
            JsfUtil.ensureAddErrorMessage(e, "Ocorreu um erro na percistencia dos dados.");
            return null;
        }
        return "refreshPage";
    }

    public String edit() {
        Ministra ministraTemp = (Ministra) JsfUtil.getObjectFromRequestParameter("ministra");
        this.ministra = ministraTemp;
        return "refreshPage";
    }

    public String destroy() {
        Ministra ministraTemp = (Ministra) JsfUtil.getObjectFromRequestParameter("ministra");
        try {
            jpaController.destroy(ministraTemp.getId());
            JsfUtil.addSuccessMessage("Ministra removido com sucesso.");
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(MinistraController.class.getName()).log(Level.SEVERE, null, ex);
        }

        return "refreshPage";
    }


    public Ministra getMinistra() {
        if (ministra == null) {
            ministra = new Ministra();
        }
        return ministra;
    }

    public List<Ministra> getMinistras(){
        this.ministras = jpaController.findMinistraEntities();
        return this.ministras;
    }

    public MinistraJpaController getJpaController() {
        return jpaController;
    }

    public Ministra getMinistraAux() {
        return ministraAux;
    }


}
